#include<iostream>
#include<cstring>
#include<string>
using namespace std;
bool f[10][10];
int l=1,ans[500]={1},k;

void wk(int k){
	for(int i=0;i<l;i++){
		ans[i]*=k;
	}	
	for(int i=0;i<l;i++){
		if(ans[i]>=10){
			ans[i+1] += ans[i]/10;
			ans[i] = ans[i]%10;
		}
	
	}
	while(ans[l]>0){
		ans[l+1] = ans[l]/10;
		ans[l] = ans[l]%10;
		l++;
	}
}

int main(){
	string a;
	cin>>a>>k;
	int x,y;
	for(int i = 1;i<=k;i++){
		cin>>x>>y;
		f[x][y] = 1;
	}
	for(int i = 0;i<=9;i++){
		f[i][i] = 1;
	}
	for(int k=1;k<=9;k++){
		for(int i=0;i<=9;i++){
			for(int j=1;j<=9;j++){
				if(f[i][k] && f[k][j])f[i][j]=1;
			}
		}
	}
	int b[10];
	for(int i=0;i<=9;i++){
		int tot = 0;
		for(int j=0;j<=9;j++){
			if(f[i][j])tot++;
		}
		b[i]=tot;
	}
	for(int i=0;i<a.length();i++){
		wk(b[a[i]-'0']);
	}
	for(int i=l-1;i>=0;i--){
		cout<<ans[i];
	}
	return 0;
	
	
}